<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Layui</title>
    <meta name="renderer" content="webkit">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
    <link rel="stylesheet" href="layui/css/layui.css" tppabs="https://www.layui.site/layui/dist/css/layui.css"  media="all">
    <!-- 注意：如果你直接复制所有代码到本地，上述css路径需要改成你本地的 -->
</head>
<body>
<!-- 动态数据表格 -->
<table class="layui-hide" id="test" lay-filter="test"></table>
    <script src="jquery/jquery-3.6.0.js"></script>
<script type="text/html" id="toolbarDemo">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
        <button class="layui-btn layui-btn-sm" lay-event="getCheckLength">获取选中数目</button>
        <button class="layui-btn layui-btn-sm" lay-event="isAll">验证是否全选</button>
        <button class="layui-btn layui-btn-sm" lay-event="insert_data">新增数据</button>
    </div>
</script>

<script type="text/html" id="barDemo">
    <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
    <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
</script>

<script type="text/html" id="insert_form">
    <div class="layui-field-box">
        <div class="layui-form-item layui-form-pane">
            <label class="layui-form-label">数据编号</label>
            <div class="layui-input-inline">
                <input type="text" id="insert_no" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item layui-form-pane">
            <label class="layui-form-label">下拉菜单</label>
            <div class="layui-input-inline layui-form">
                <select name="insert_select" id="insert_select">
                    <option value="" selected="">下拉菜单</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item layui-form-pane">
            <label class="layui-form-label">时间</label>
            <div class="layui-input-inline">
                <input type="text" name="date" id="insert_time" placeholder=" - " class="layui-input">
            </div>
        </div>
    </div>
</script>

<script type="text/html" id="update_form">
    <div class="layui-field-box">
        <div class="layui-form-item layui-form-pane">
            <label class="layui-form-label">数据编号</label>
            <div class="layui-input-inline">
                <input type="text" id="update_no" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item layui-form-pane">
            <label class="layui-form-label">下拉菜单</label>
            <div class="layui-input-inline layui-form">
                <select name="insert_select" id="update_select">
                    <option value="" selected="">下拉菜单</option>
                </select>
            </div>
        </div>
        <div class="layui-form-item layui-form-pane">
            <label class="layui-form-label">时间</label>
            <div class="layui-input-inline">
                <input type="text" name="date" id="update_time" placeholder=" - " class="layui-input">
            </div>
        </div>
    </div>
</script>
<script src="layui/layui.js" charset="utf-8"></script>
<!-- 注意：如果你直接复制所有代码到本地，上述 JS 路径需要改成你本地的 -->

<script>
    layui.use('table', function(){
        var table = layui.table;

        table.render({
            elem: '#test'
            ,url:'/testJSON'/*tpa=https://www.layui.site/test/table/demo1.json*/
            ,toolbar: '#toolbarDemo' //开启头部工具栏，并为其绑定左侧模板
            ,defaultToolbar: ['filter', 'exports', 'print', { //自定义头部工具栏右侧图标。如无需自定义，去除该参数即可
                title: '提示'
                ,layEvent: 'LAYTABLE_TIPS'
                ,icon: 'layui-icon-tips'
            }]
            ,title: '用户数据表'
            ,cols: [[
                {type: 'checkbox', fixed: 'left'}
                ,{  title:'id',width:80, fixed: 'left', unresize: true, sort: true ,templet:function (data) {
                        return '<em>'+data.id+'</em>'
                    }}
                ,{ title:'用户名', width:120, templet:function (data) {
                        return '<em>' +data.username +'</em>'
                    }}
                ,{ title:'邮箱', width:150, templet: function(data){
                        return '<em>'+ data.email +'</em>'
                    }}
                ,{field:'sex', title:'性别', width:80,  sort: true}
                ,{field:'city', title:'城市', width:100}
                ,{field:'sign', title:'签名'}
                ,{field:'experience', title:'积分', width:80, sort: true}
                ,{field:'ip', title:'IP', width:120}
                ,{field:'logins', title:'登入次数', width:100, sort: true}
                ,{field:'joinTime', title:'加入时间', width:120}
                ,{fixed: 'right', title:'操作', toolbar: '#barDemo', width:150}
            ]]
            ,page: true
        });

        //头工具栏事件
        table.on('toolbar(test)', function(obj){
            var checkStatus = table.checkStatus(obj.config.id);
            switch(obj.event){
                case 'getCheckData':
                    var data = checkStatus.data;
                    //JSON.stringify(data);    // 它的作用是把一个对象(JSONObject   JSONArray)转成字符串形态
                    // JSON.parse("String");    // 把一个字符串转换成一个对象(JSONObject   JSONArray)?
                    // 上述的两个方法，是隶属于JS原生的，不是LayUI，这两个方法如果转换的对象不是json类型的，那么会抛出错误
                    // layer.alert(JSON.stringify(data));
                    console.log(data);         // 此方法是把一个js中的对象或者字符串展示到页面的控制台中
                    break;
                case 'getCheckLength':
                    var data = checkStatus.data;
                    layer.msg('选中了：'+ data.length + ' 个');
                    break;
                case 'isAll':
                    layer.msg(checkStatus.isAll ? '全选': '未全选');
                    break;
                case 'insert_data':
                    //弹出表单
                    layer.open({
                        type: 1
                        ,title: '新增数据' //不显示标题栏
                        ,closeBtn: false
                        ,area: ['500px','500px']  // 宽和高
                        ,shade: 0.8
                        ,id: 'LAY_layuipro' //设定一个id，防止重复弹出
                        ,btn: ['新增', '取消']
                        ,btnAlign: 'c'
                        ,moveType: 1 //拖拽模式，0或者1
                        ,content: $('#insert_form').html()         // 引入自定义表单
                        ,btn1: function(index, layero){            // 这个是新增按钮点击事件
                            layer.msg("新增按钮");
                            // let insert_no = $("#insert_no").val();
                            // if(insert_no) {
                            //     // 自定义ajax请求
                            //     // working
                            //     // 关闭弹出框
                            //     layer.close(index);
                            // }
                            // else {
                            //     alert("请填写必要项!");
                            // }
                        }
                        ,success: function(layero){
                            // 初始化弹出表单
                            // for(i = 0; i < data.length; i++) {
                            //     var only= data[i];
                            $("#insert_select").append("<option value='1'>下拉数据01</option>");
                            $("#insert_select").append("<option value='2'>下拉数据01</option>");
                            // }
                            // 初始化过程中，触发这里的函数代码
                            // 初始化form表单样式，并刷新select渲染
                            layui.use(['form'], function(){
                                layui.form.render('select');
                            });
                            // 初始化日期控件
                            layui.use('laydate', function(){
                                var laydate = layui.laydate;
                                //日期  搜索的开始时间
                                laydate.render({
                                    elem: '#insert_time',
                                });
                            });
                        }
                    });
                    break;

                //自定义头工具栏右侧图标 - 提示
                case 'LAYTABLE_TIPS':+
                    layer.alert('这是工具栏右侧自定义的一个图标按钮');
                    break;
            };
        });

        //监听行工具事件
        table.on('tool(test)', function(obj){
            var data = obj.data;
            //console.log(obj)
            if(obj.event === 'del'){
                layer.confirm('真的删除行么', function(index){
                    obj.del();
                    layer.close(index);
                });
            } else if(obj.event === 'edit'){
                //弹出表单
                layer.open({
                    type: 1
                    ,title: '编辑数据' //不显示标题栏
                    ,closeBtn: false
                    ,area: ['500px','500px']  // 宽和高
                    ,shade: 0.8
                    ,id: 'LAY_layuipro' //设定一个id，防止重复弹出
                    ,btn: ['更新', '取消']
                    ,btnAlign: 'c'
                    ,moveType: 1 //拖拽模式，0或者1
                    ,content: $('#update_form').html()         // 引入自定义表单
                    ,btn1: function(index, layero){            // 这个是新增按钮点击事件
                        layer.msg("更新按钮");
                        // let insert_no = $("#insert_no").val();
                        // if(insert_no) {
                        //     // 自定义ajax请求
                        //     // working
                        //     // 关闭弹出框
                        //     layer.close(index);
                        // }
                        // else {
                        //     alert("请填写必要项!");
                        // }
                    }
                    ,success: function(layero){
                        // 初始化弹出表单
                        // for(i = 0; i < data.length; i++) {
                        //     var only= data[i];
                        $("#update_select").append("<option value='1'>下拉数据01</option>");
                        $("#update_select").append("<option value='2'>下拉数据01</option>");
                        // }
                        // 初始化过程中，触发这里的函数代码
                        // 初始化form表单样式，并刷新select渲染
                        layui.use(['form'], function(){
                            layui.form.render('select');
                        });
                        // 初始化日期控件
                        layui.use('laydate', function(){
                            var laydate = layui.laydate;
                            //日期  搜索的开始时间
                            laydate.render({
                                elem: '#update_time',
                            });
                        });
                    }
                });
            }
        });
    });
    // 新增数据弹出表单
    function openLayer(){

    }

</script>

</body>
</html>